"""
APIPost接口文档生成器主程序
"""

import os
import sys
from datetime import datetime

# 添加src目录到路径
sys.path.append(os.path.join(os.path.dirname(__file__), 'src'))

from src.json_parser import APIPostParser
from src.doc_generator import DocGenerator
from src.config import Config


def main():
    """主程序入口"""
    print("APIPost接口文档生成器")
    print("=" * 50)
    
    # 加载配置
    config = Config()
    
    # 文件路径配置
    input_file = config.input_file
    template_file = config.template_file
    output_dir = config.output_dir
    
    # 检查输入文件
    if not os.path.exists(input_file):
        print(f"错误：输入文件不存在 - {input_file}")
        return
    
    # 确保输出目录存在
    os.makedirs(output_dir, exist_ok=True)
    
    try:
        # 1. 解析JSON数据
        print("正在解析APIPost JSON文件...")
        parser = APIPostParser(input_file)
        project_info = parser.get_project_info()
        apis = parser.get_all_parsed_apis()
        
        print(f"项目名称: {project_info['name']}")
        print(f"解析到 {len(apis)} 个接口")
        
        # 2. 生成文档
        print("正在生成Word文档...")
        
        # 尝试使用模板，如果模板不存在则创建空文档
        if os.path.exists(template_file):
            print(f"使用模板文件: {template_file}")
            doc_gen = DocGenerator(template_file)
        else:
            print("模板文件不存在，创建空文档")
            doc_gen = DocGenerator()
        
        # 添加文档标题和说明
        doc_gen.add_title(f"{project_info['name']} 接口文档", level=1)
        
        if project_info['intro']:
            doc_gen.doc.add_paragraph(f"项目说明：{project_info['intro']}")
        
        # 添加生成时间
        if config.include_timestamp:
            current_time = datetime.now().strftime("%Y年%m月%d日 %H:%M:%S")
            doc_gen.doc.add_paragraph(f"文档生成时间：{current_time}")
        doc_gen.doc.add_paragraph()  # 空行
        
        # 添加接口需求章节
        doc_gen.add_title("接口需求", level=2)
        
        # 为每个API生成文档章节
        for i, api_data in enumerate(apis, 1):
            api_name = api_data['basic_info']['name']
            print(f"正在处理接口 {i}: {api_name}")
            
            # 生成章节编号 (如 2.1.1.1, 2.1.1.2, ...)
            section_number = f"{config.section_start}.1.1.{i}"
            
            # 添加API章节
            doc_gen.add_api_section(api_data, section_number, config)
        
        # 3. 保存文档
        timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
        output_filename = f"{project_info['name']}_接口文档_{timestamp}.docx"
        output_path = os.path.join(output_dir, output_filename)
        
        doc_gen.save(output_path)
        
        print("\n文档生成完成！")
        print(f"输出文件: {output_path}")
        print(f"共生成 {len(apis)} 个接口的文档")
        
    except Exception as e:
        print(f"错误：{e}")
        import traceback
        traceback.print_exc()


if __name__ == "__main__":
    main()
